<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

    <script>
        // Class可以通过extends关键字实现继承，让子类继承父类的属性和方法。extends的写法比ES5的原型链继承，要清晰方便很多

        //ES6规定，子类必须在constructor()方法中调用super(),否则就会报错，这是因为子类自己的this对象，必须先通过父类的构造函数
        // 完成塑造，得到与父类同样的属性和方法，然后再对其进行加工，添加子类自己的实例属性和方法。如果不调用super()方法，
        //子类就得不到自己的this对象

        //父类
        class Person{
            constructor(name,age){
                this.name = name;
                this.age = age;

            }

            getName(){
                console.log(this.name);
                
            }

            static getInfo(){
                console.log("这是一个人类");
                
            }
        }

        //子类继承Person
        class Student extends Person{
            //super()方法
            constructor(name,age,schoolName){
                super(name,age);
                this.schoolName = schoolName;
            }

            getSchool(){
                console.log(this.schoolName);
                
            }

        }

        var s = new Student("小明",13,"二中");
        s.getName();
        // s.getInfo();//报错
        Student.getInfo();//静态方法需要通过类名才能调用
        
        s.getSchool();

        

    </script>

</body>
</html>